<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
	<head profile="http://gmpg.org/xfn/11">

		<link href="http://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type="text/css">  
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />       
		<link rel="stylesheet" href="bootstrap.css">  
		<link rel="stylesheet" href="main.css">  
	
		<title>Ben Marks</title>       

		<!-- Minified Bootstrap JavaScript --> 
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
		<script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
 
		<!-- These need to go after the bootrstrap js scripts --> 
		<script src="./js/jquery-1.4.4.min.js" type="text/javascript"></script>  
		<script src="./js/jquery.easytabs.min.js" type="text/javascript"></script> 
		<script src="./js/custom.js" type="text/javascript"></script>         

	</head> 

	
	<body> 
		<div id="tab-wrap">
		<div id="tab-container">   
			<ul><img src="./img/me.jpg"; class="circImgLarge">
				<h2>Ben Marks</h2>
				<tagline>I like building / tweaking things and helping people.</tagline>

				<li id="start"><a href="#about">About Me</a></li>
				<li><a href="#projects">Projects</a></li>
				<li><a href="#jobs">Jobs</a></li>
				<br style="clear:both;" />   
			</ul>   

		<div class="panel-container">
			<div id="about">  
		
				<p>Hi! My name is Ben Marks, and I'm a student 
				at <a href="http://www.swarthmore.edu/">Swarthmore College </a>- a small liberal arts 
				school about 20 minutes from Philadelphia. 
				At the moment, I'm on track to complete a 
				major in <a href="http://cs.swarthmore.edu/">Computer Science </a>and a minor in <a href="http://www.swarthmore.edu/mathematics-statistics">Statistics</a>. 
				My main interests are in computer systems, distributed 
				systems, and networks.</p>
	
				<p>On campus, I'm part of the <a href="http://www.sccs.swarthmore.edu/">Swarthmore College Computer 
				Society</a> and a tutor </a>for the CS department. Outside of CS, 
				I enjoy playing trumpet in the <a href="http://www.swarthmore.edu/music/swarthmore-college-wind-ensemble">Wind Ensemble</a>, working as 
				a <a href="http://www.swarthmore.edu/academic-advising-support/student-academic-mentors">Student Academic Mentor</a>, and taking part in Swarthmore's 
				<a href="http://www.swarthmore.edu/learning-life">Learning For Life </a>program. In my free time, you can find me 
				cooking, biking, or working on something CS.</p>  
	
				<p>Feel free to check out some of my work on the 
				"Experiences" and "Just For Fun" pages.</p>
		
			</div>
			<div id="projects">
				<div class="panel-group" id="accordion">
				
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title"> 
								<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
									Linux Kernel Level Programming  
									<span class="float-right">C</span>
								</a>
							</h4>
						</div>   
						<div id="collapseOne" class="panel-collapse collapse in">
							<div class="panel-body"> 
							
								
								<img  src="./img/linux.png"  class="projectPic">
							
								<p>As part of the Operating Systems course at Swarthmore,  
								I worked with a partner to modify and add features to the
								Linux 2.6 Kernel.</p>
								
								<p> Together, we implemented an Event 
								synchronization primitive. This allows multiple processes 
								to open and wait on a single ``event.'' Subsequently, 
								another process can open and signal the event, notifying 
								all processes that were previously waiting that the 
								event had occurred. This functionality is similar to 
								the Python threading <a href="https://docs.python.org/2/library/threading.html#threading.Event">Event synchronization primitive</a>. 
								This synchronization primitive could be useful in 
								many multiprogramming environments and has a slightly 
								higher level of abstraction than semaphores or condition 
								variables.</p>
								
								<p> Another Linux addition was the creation of a 
								Loadable Kernel Module implementing a mailbox device 
								similar to a <a href="http://www.linuxjournal.com/article/2156">Unix named pipe</a>. Processes can either read 
								from or write to a mailbox, blocking appropriately if 
								the mailbox is empty or full. Data in the mailbox persist 
								past the life of a single reader or writer. Such a 
								communication mechanism would be useful for exchanging 
								data between two processes when a hierarchical relationship 
								may not exist or when processes are specifically readers or 
								writers. </p>
								
								<div class="source"> See it here </div>
							</div>   
						</div>  
					</div>  
					
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title"> 
								<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
									Implementing TCP 
									<span class="float-right">C</span>
								</a>
							</h4>   
						</div>   
						<div id="collapseTwo" class="panel-collapse collapse">
							<div class="panel-body">
							
								<img class="projectPic" src="./img/tcp.png">
							
								<p> In Computer Networks, I had the chance to 
								implement a stripped down version of <a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a>. 
								My implementation provided reliable transit, 
								flow control, and congestion control over a 
								lossy network, along with smooth connection 
								setup and teardown. In order to maximize transfer 
								speeds, my implementation used the exponentially 
								weighted moving average to estimate the round-trip 
								time of a packet.</p>
								
								<p> This assignment was fascinating. 
								I enjoyed ``pulling back the curtain'' on TCP and 
								seeing how some of the features of reliable transit 
								used constantly could be implemented. Simple 
								concepts, like acknowledgements, sequence numbers, 
								and timeouts combined to create a powerful, useful 
								service of reliability. </p>
								 
							</div>   
						</div> 
					</div>  
					
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title"> 
								<a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">  
									Cracking Windows Games <span class="float-right">X86, Hex</span>
								</a>
							</h4>   
						</div>   
						<div id="collapseThree" class="panel-collapse collapse">
							<div class="panel-body">  
								<p>''Assembly code (usually) tells no lies.'' </p>
							
								<p>As a CS Ninja (TA) for the computer systems 
								class, I gained some exposure to x86 assembly 
								code. One of my favorite assignments, the <a href="http://csapp.cs.cmu.edu/public/labs.html">CMU 
								Binary Bomb</a>, involved reverse engineering a 
								binary to determine the expected string inputs. 
								Reverse correctly, and you move on to the next 
								phase of the program; make a mistake, and the 
								binary bomb explodes.</p>
								
								<img class="projectPic" src="./img/minesweeper.png">
								<p> I decided to take the 
								reverse engineering experience to a different 
								sort of application: reversing Windows games. 
								Using IDA, OllyDbg, and Hexplorer, I examined
								Windows Minesweeper and patched it to make my 
								own version. Frustrated with the mines? Click 
								``Help > About Minesweeper'' to get a nice hint 
								about where they might be.</p>
								
								<img class="projectPic" src="./img/hearts.png">
								<p> I also examined Microsoft
								Hearts, and wrote a program to allow users to cheat. 
								Want to see the cards in your opponent's hands? 
								No problem. Want to see the cards they will pass
								to you? Sure. Shooting the moon just got a lot 
								easier. </p>
								
							</div>   
						</div>  
					</div> 		
					
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title"> 
								<a data-toggle="collapse" data-parent="#accordion" href="#collapseFour">  
									Implementing Malloc, Realloc, and Free 
									<span class="float-right">C</span>
								</a>
							</h4>   
						</div>   
						<div id="collapseFour" class="panel-collapse collapse">
							<div class="panel-body">  
								<p> Implementing a dynamic memory allocator 
								is a standard assignment at many schools, although 
								it's not assigned in the Computer Systems course 
								at Swarthmore. As a Ninja for the course, I decided 
								it might be a fun opportunity to hone my C skills. </p>
								
								<p> My implementation uses explicit segregated free lists 
								in powers of two. I found that choosing the first 
								block within a list that would fit provided an 
								acceptable balance between space utilization and 
								throughput. Further, I chose to allocate space 
								from the end of a free block, which greatly improved 
								performance with repeated calls to realloc. I use 
								coalescing when freeing blocks to reduce external 
								fragmentation. </p>
								
								<p> While I wasn't submitting this assignment 
								for a grade, I'm pleased that my implementation scores 
								56/60 on utilization and 40/40 on throughput on the <a href="http://csapp.cs.cmu.edu/public/labs.html">CMU 
								driver program</a>. </p>
								
							</div>   
						</div>  
					</div> 
				
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title"> 
								<a data-toggle="collapse" data-parent="#accordion" href="#collapseFive">  
									Personal C Library <span class="float-right">C</span>
								</a>
							</h4>   
						</div>   
						<div id="collapseFive" class="panel-collapse collapse">
							<div class="panel-body">  
							
								<img  src="./img/clogo.png"  class="projectPic">
							
								<p> When writing C code, I find myself using 
								certain functions, such as a wrapper for 
								malloc, frequently. I decided to start integrating 
								commonly used functions into a library that I could 
								then statically link at compile time. </p>
								
								<p> At the moment, 
								my library includes functions for reading in user input, 
								manipulating strings, timing function calls, generating 
								random numbers, and calling malloc. I also have a Makefile 
								that compiles all the library files into a single library. 
								The Makefile uses wildcards and filters to incorporate new 
								library modules into the library without modifying the 
								Makefile. </p>
								
								<p> Feel free to use this library, and let me know 
								if you find anything that doesn't work well. At the moment, 
								I am aware of an issue with EOF in the user input library. </p>
								
							</div>   
						</div>  
					</div> 	
							
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title"> 
								<a data-toggle="collapse" data-parent="#accordion" href="#collapseSix">  
									Linguistics Corpus Interface <span class="float-right">Python</span>
								</a>
							</h4>   
						</div>   
						<div id="collapseSix" class="panel-collapse collapse">
							<div class="panel-body">  
							
								<img  src="./img/python.png"  class="projectPic">
							
								<p> Introduction to Linguistics exposed me to sociolinguistics 
									- the study of the interaction between language and society -
									for the first time. Our final project was to use a corpus 
									containing the experiences of ~30 bilinguals to comment on 
									and analyze the bilingual experience. I proposed an alternative 
									project based on computer programming: writing a framework to 
									compare similarity between two stories in the bilingual corpus. 
		 						</p>
								
								<p> Such a framework could be useful in determining which experiences 
									are common to bilinguals or which components of the bilingual 
									experience may be correlated.  Under the supervision of <a href="http://brooklillehaugen.weebly.com/">Brook 
									Lillehaugen</a>, I developed criteria for characterizing a bilingual 
									experience and implemented a program to interface with and 
									analyze a set of characterized stories. Given a characterized 
									corpus, my program allows a user to filter stories by certain 
									criteria, see the commonalities between two stories, or determine 
									the similarity of one story to all other stories in the corpus. </p>
									
								<p> I'm happy that this program may be distributed in future semesters
								to linguistics students in this course. The framework should prove helpful
								by allowing the students to find and take advantage of patterns within
								the data of collected stories. </p>
								
								<p> In the future, I would like to try to improve this program 
								to include more sophisticated aspects of computer programming. As
								a Junior, I plan to take Databases and Natural Language Processing, 
								both of which could lead to enhancements in the similarity matching
								or performance of this framework. </p>
								
							</div>   
						</div>  
					</div> 	
				
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title"> 
								<a data-toggle="collapse" data-parent="#accordion" href="#collapseSeven">  
										Ramah Darom Package Sorter <span class="float-right">VBA</span>
								</a>
							</h4>   
						</div>   
						<div id="collapseSeven" class="panel-collapse collapse">
							<div class="panel-body">  
							
								<img  src="./img/ramah.jpg"  class="projectPic">
							
								<p> The summer after high school, I worked at <a href="http://campramahdarom.org/">Camp Ramah Darom </a>as 
								the technology coordinator. When I had time outside of this, 
								I worked in the mail room. On any given day, we received up 
								to 200 packages, which all needed to be sorted and logged. 
								The process took 5 people 1-2 hours.  The following summer, 
								with a little bit of CS experience, I decided to see if I 
								could write a program that would make the process a bit 
								less painful. I wrote a macro-driven form in Excel that 
								took in information about each package and logged it in 
								a daily database. As an added bonus, the spreadsheet stored 
								prior package senders, so any particular address only needed 
								to be typed in once per summer. Once all packages had been 
								logged, the daily database was sorted by bunk and printed. </p>
		
								<p> The Excel program saved a lot of time. In particular, it omitted 
								one time-intensive step from the package process: sorting packages 
								by bunk. When logging packages by hand, it made sense to sort 
								packages first and then log each bunk as a group. However, since 
								Excel could sort the packages at the end of the process, the initial 
								sorting process was no longer needed. The end result: a streamlined 
								and efficient package logging solution that was easier and faster. </p>
								
							</div>   
						</div>  
					</div> 	
					
				</div> <!-- Panel Group for Accordion -->
			</div>	
			
		
				<div id="jobs">
				<topline>
					<p>I've been fortunate to have opportunities to apply what I know, 
					learn new material, and collaborate with others.</p>
				</topline>
				<div class="panel-group" id="accordion2">  
				
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title"> 
								<a data-toggle="collapse" data-parent="#accordion2"   href="#collapseCOne">  
									Swarthmore College  
									<span class="float-right">2014-2015</span>
								</a>
							</h4>   
						</div>   
						<div id="collapseCOne" class="panel-collapse collapse in">
							<div class="panel-body"> 
							
								<img class="jobPic"  src="./img/swat.jpg">
								<jobTitle>Student Academic Mentor</jobTitle>
							
								<p> I am excited that this coming year I will be 
								a <a href="http://www.swarthmore.edu/academic-advising-support/student-academic-mentors">Student Academic Mentor (SAM) </a>at Swarthmore College. 
								As a SAM, I'll be a resource for residents in my dorm, 
								helping them to be successful academically at Swarthmore.</p>
								
								<p>The SAM position begins with Freshman orientation, helping 
								over 300 new students register for classes and adjust to 
								college academics. It continues throughout the year, where 
								I'll be accessible to students within my dorm and around
								campus for any student who needs help or wants guidance. 
								SAMs work with students from all years - from seniors 
								who want to find resources for careers to sophomores 
								declaring their major. As a SAM, I'll work closely 
								with students, professors, and the Dean's office to 
								help facilitate success.</p>
								
								<p> I'm excited to work with my peers 
								and help them make the most of their college 
								academic experiences.</p>
							</div>   
						</div>  
					</div>    
					
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title">
								<a data-toggle="collapse" data-parent="#accordion2"   href="#collapseCTwo">
									National Institute for Standards and Technology
									<span class="float-right">January 2014</span>
								</a>
							</h4>
						</div>
						<div id="collapseCTwo" class="panel-collapse collapse">
						
							<div class="panel-body"> 
							
								<img class="jobPic"  src="./img/nist.jpg">
								<jobTitle>Research Intern</jobTitle>
							
								<p> In January 2014, I had the opportunity to work 
								with <a href="http://www.nist.gov/el/isd/ks/kramer.cfm">Tom Kramer </a>at the National Institute for 
								Standards and Technology (<a href="http://www.nist.gov/">NIST</a>) in a week long
								shadow program. While there, 
								I contributed to Mr. Kramer's current research paper: 
								''Software Tools for XML to 
								OWL Translation.'' The paper summarized a set
								of tools developed at NIST for effectively converting
								XML instances and XSD schemas to OWL (Web Ontology
								Language) classes. My own contributions included
								evaluating the asymptotic complexity of 
								the implemented tools and contrasting them with 
								existing conversion utilities.</p>
								
								<p> The process to publish this paper is ongoing.</p>
								 
							</div>  
						</div> 
					</div>  
					
					<div class="panel panel-default">   
						<div class="panel-heading">
							<h4 class="panel-title">
								<a data-toggle="collapse" data-parent="#accordion2"   href="#collapseCThree">  
									Swarthmore CS Department  
									<span class="float-right">2013-2014</span>
								</a>
							</h4>   
						</div>   
						<div id="collapseCThree" class="panel-collapse collapse">
							<div class="panel-body"> 
							
								<img class="jobPic"  src="./img/swatcs.jpg">
								<jobTitle>Student Mentor / Ninja</jobTitle>
							
								<p> My sophomore year, I worked for <a href="cs.swarthmore.edu">the Computer Science 
								Department </a>as a <a href="http://www.cs.swarthmore.edu/people/ninjas.html">Ninja</a> (Student Mentor / TA) for the 
								Introductory Computer Systems course. In this role, I 
								mentored ~35 
								students each semester through weekly help sessions 
								and assistance in lab sections. The position also 
								involved weekly pedagogical meetings focused on 
								effective ways to help enrolled students develop 
								problem solving and programming skills. </p>
								
								<p> Being a Ninja was incredibly gratifying, as I 
								was able to see other students improve their own skills
								over the course of the semester. I enjoyed sharing 
								my enthusiasm for computer systems with other students
								while helping them progress in their CS careers.</p>
							</div>
						</div> 
					</div>  
				
					<div class="panel panel-default">
						<div class="panel-heading">
							<h4 class="panel-title" background="red">
								<a data-toggle="collapse" data-parent="#accordion2"   href="#collapseCFour">  
									Swarthmore College Computer Society 
									<span class="float-right">2012-Present</span> 
								</a>
							</h4>   
						</div>   
						<div id="collapseCFour" class="panel-collapse collapse">
							<div class="panel-body">
							
							<img class="jobPic"  src="./img/sccs.jpg">
							<jobTitle>System Administrator</jobTitle>
							
							<p> 
								<p>Since freshman fall, I have been a system administrator
								for the Swarthmore College Computer Society (<a href="http://www.sccs.swarthmore.edu/">SCCS</a>).</p>
								
								<p> SCCS is a student run organization that provides 
								computing resources, such as mailing lists and websites,
								to student groups on campus. We also maintain an online
								student photo directory and a computer lounge for
								student use.</p>
								
								<p> As a sysadmin, I'm responsible for 
								the backend of SCCS - a role which has taught me 
								many practical skills about server administration and
								troubleshooting. I also serve as the treasurer for 
								SCCS, overseeing our budget of over $2,000.</p>
								
								<p> Working for SCCS is challenging and satisfying. I
								proud that some of the work I do is used by students 
								daily, and I'm challenged to maintain a level of service
								expected by our users: peers and faculty. </p>
								
							</div>   
						</div> 
					</div> 
					
					
				</div> <!-- Panel Group for Accordion --> 
			</div>   
			</div>  
		</div>
		</div>  
	</body>

</html>
					
					
